﻿/*
 * @Author: error: git config user.name && git config user.email & please set dead value or install git
 * @Date: 2022-10-25 14:56:58
 * @LastEditors: error: git config user.name && git config user.email & please set dead value or install git
 * @LastEditTime: 2022-10-25 18:54:00
 * @FilePath: \WYW_0419_Oasis\JavaScripts\GameUI.ts
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
import { DataCenterC } from "odin"
import { PlayerAll } from "./PlayerAll"

@MWGameUI.MWUIMono
export default class GameUI extends MWGameUI.MWUIBehaviour {

	/** 
	 * 构造UI文件成功后，在合适的时机最先初始化一次 
	 */
	public onInitialized() {
		//获得对应按钮类型
		let button1=this.uiObjectAsWidgetBase().findChildByPath("Canvas/JumPing/jumping") as MWGameUI.MWUIButton
		let button2=this.uiObjectAsWidgetBase().findChildByPath("Canvas/Flying/flying") as MWGameUI.MWUIButton
		let button3=this.uiObjectAsWidgetBase().findChildByPath("Canvas/YingShen/yingshen") as MWGameUI.MWUIButton
	
		//给每个按钮添加点击事件
		button1.onClicked().add(this.buttonClick1.bind(this))
		button2.onClicked().add(this.buttonClick2.bind(this))
		button3.onClicked().add(this.buttonClick3.bind(this))

		let wenben=this.uiObjectAsWidgetBase().findChildByPath("Canvas/shijian") 
		//获得血条
		let xuetiao=this.uiObjectAsWidgetBase().findChildByPath("Canvas/xuetiao") as MWGameUI.MWUIProgressbar
		
		//监听血条变化
		Events.addServerListener("hurting",()=>{
		let playerData=DataCenterC.instance.getModuleData(PlayerAll)

		playerData.subHp(30)

		let hp=playerData.getHp()

		xuetiao.setCurrentValue(hp)

		if(hp<=0)
		{
			GamePlay.getCurrentPlayer().character.ragdoll(true)
		}
		})
	}
	
	//按钮绑定的方法，监听信息
	buttonClick1()
	{
		Events.dispatchLocal("jump")
	}
	buttonClick2()
	{
		Events.dispatchLocal("fly")
	}
	buttonClick3()
	{
		Events.dispatchLocal("stealth")
	}
	/** 
	 * 构造UI文件成功后，onInitialized之后 
	 * 对于UI的根节点的添加操作，进行调用
	 * 注意：该事件可能会多次调用
	 */
	public construct() {

	}

	/** 
	 * 构造UI文件成功后，construct之后
	 * 对于UI的根节点的移除操作，进行调用
	 * 注意：该事件可能会多次调用
	 */
	public destruct() {

	}

	/** 
	 * 构造UI文件成功后，UI对象再被销毁时调用 
	 * 注意：这之后UI对象已经被销毁了，需要移除所有对该文件和UI相关对象以及子对象的引用
	 */
	public onDestroy() {

	}

	/** 
	 * 构造UI文件成功后，construct之后 
	 * UI对象循环调用该事件
	 * 注意：性能影响较大，考虑合适时机使用或则注册SetInterval来替代
	 */
	//public tick(inGeometry: MWGameUI.geometry, inDeltaTime: number) {
	//}

}
